package com.mingshine.cloud.test;

import org.springframework.amqp.rabbit.connection.CorrelationData;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
 
/**
 * 消息发布者 匹配机制      重要的提示：匹配指的是根据规则匹配到所有的队列，不是匹配到所有的消费者
 * @Class TopicSender
 * @Author 作者姓名:LiuXing
 * @Version 1.0
 * @Date 创建时间：2019-05-21 11:23
 * @Direction 类说明
 */
//@Component
public class TopicSender {
 
    @Autowired
    private RabbitTemplate rabbitTemplate;
 
    /**
     * 发送消息
     * @param uuid
     * @param message  消息
     */
    public void send(String uuid,Object message) {
        CorrelationData correlationId = new CorrelationData(uuid);
        /**
         * ExchangeConfig.TOPIC_EXCHANGE  指定消息交换机
         * RabbitMqConfig.ROUTIN_TOPIC_KEY  指定一个路由键，不过其实fanout不需要路由键
         */
        //发送消息至：direct类型的交互机【ExchangeConfig.TOPIC_EXCHANGE】上，路由键是【RabbitMqConfig.ROUTIN_TOPIC_KEY】
        rabbitTemplate.convertAndSend( ExchangeConfig.TOPIC_EXCHANGE , RabbitMqConfig.ROUTIN_TOPIC_KEY ,
                message, correlationId );
        //TODO 绑定在此交换机上的队列都会收到数据，监听此队列的消费者都会收到信息
    }
 
}